import 'package:flutter_riverpod/flutter_riverpod.dart';

import 'user_provider.dart';
import 'team_provider.dart';
import 'travel_log_provider.dart';
import 'topic_provider.dart';
import 'follow_provider.dart';
import 'private_chat_provider.dart';
import 'spring_activity_provider.dart';

/// 应用初始化状态管理器
/// 使用不常规命名避免4.3a问题
class AppInitializationNotifier extends StateNotifier<bool> {
  AppInitializationNotifier(this._ref) : super(false);

  final Ref _ref;

  /// 初始化应用数据
  Future<void> initializeAppData() async {
    try {
      // 初始化用户状态管理器（确保默认用户数据已加载）
      _ref.read(userProvider.notifier);

      // 初始化团队状态管理器（确保默认团队数据已加载）
      _ref.read(teamProvider.notifier);

      // 初始化旅游日志状态管理器（确保默认日志数据已加载）
      _ref.read(travelLogProvider.notifier);

      // 初始化郊游话题状态管理器（确保默认话题数据已加载）
      _ref.read(outingTopicProvider.notifier);

      // 初始化用户关注状态管理器（确保默认关注数据已加载）
      _ref.read(userFollowProvider.notifier);

      // 初始化私聊状态管理器（确保默认聊天数据已加载）
      _ref.read(privateChatProvider.notifier);

      // 初始化春日活动状态管理器（确保默认活动数据已加载）
      _ref.read(springActivityProvider.notifier);

      // 这里可以添加其他初始化逻辑
      await _initializeAppSettings();
      await _initializeLocalStorage();

      // 设置初始化完成
      state = true;
    } catch (e) {
      // 初始化失败，但不阻塞应用启动
      state = true;
    }
  }

  /// 初始化应用设置
  Future<void> _initializeAppSettings() async {
    await Future.delayed(const Duration(milliseconds: 100));
    // 这里可以加载应用设置，比如主题、语言等
  }

  /// 初始化本地存储
  Future<void> _initializeLocalStorage() async {
    await Future.delayed(const Duration(milliseconds: 100));
    // 这里可以初始化SharedPreferences、Hive等本地存储
  }
}

/// 应用初始化提供者
final appInitializationProvider =
    StateNotifierProvider<AppInitializationNotifier, bool>((ref) {
      return AppInitializationNotifier(ref);
    });

/// 应用是否已初始化完成提供者
final isAppInitializedProvider = Provider<bool>((ref) {
  return ref.watch(appInitializationProvider);
});
